package com.atguigu.springcloud.alibaba.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @auther zzyy
 * @create 2020-02-23 17:02
 */
@RestController
@RefreshScope //支持Nacos的动态刷新功能。
public class ConfigClientController
{
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }
}

//    @RefreshScope 是 Spring Cloud 的一个注解，主要用于支持动态刷新配置。使用这个注解的类（通常是配置类或使用了配置的 Bean）将在其配置属性变更时自动更新。特别是在与 Nacos 集成时，@RefreshScope 使得应用能够在 Nacos 中的配置变化时自动刷新其配置。
//
//        功能
//        动态刷新配置：当 Nacos 或其他配置源中的配置发生变化时，带有 @RefreshScope 注解的 Bean 会在下一次请求时重新加载最新的配置信息。
//
//        作用范围：@RefreshScope 影响的是 Spring Bean 的作用域，当 Bean 被标注为 @RefreshScope 时，每次发生刷新事件时，该 Bean 会被销毁并重新创建，因此它会读取最新的配置。
//
//        触发条件
//        具体触发条件主要有以下几种：
//
//        通过 Nacos 控制台修改配置：
//
//        在 Nacos 控制台中修改某个配置项并发布，相关联的 Bean 会自动感知并在下次请求时更新。
//        应用发起 /refresh 请求：
//
//        Spring Cloud 提供了一个 /refresh 端点，可以通过访问该端点来手动触发配置的刷新。这需要 Spring Boot Actuator 依赖支持。
//        例如，发送 POST 请求到 http://<your-server>:<port>/actuator/refresh，会导致标记为 @RefreshScope 的所有 bean 被重新加载。
//        配置发生变化：
//
//        如果使用了 Spring Cloud Config Server 或 Nacos 等配置中心，当中心中的配置发生变化时，相关的 Bean 也会被自动刷新。